Sessions Namen und IDs
am 06.10.2006 13:03:58 von Karsten Busenbender
Hallo.
Gibt es einen Zusammenhang zwischen dem Namen einer Session und deren ID?
Nachdem ich mich in das Thema Sessions eingelesen und viel ausprobiert
habe, bis ich Variablen uebergeben konnte, habe ich jetzt festgestellt,
dass ich trotz Loeschen einer Session bei gleicher Namensgebung immer
die gleiche ID bekomme.
Nun habe ich einen Namen gewaehlt, der beispielsweise test192168000001
heisst, und damit die IP-Adresse des Benutzers angibt. Wenn ich aus
test192... testi192... mache, bekomme ich eine neue SessID.
Kann ich mich auf die Namensgebung und die vielleicht zugehoerige ID
verlassen und dieses als Sicherheitsmerkmal einbauen, um die ID nicht
mittels POST oder GET uebergeben zu muessen?
Ich weiss, dass diese IP keine oeffentliche Adresse ist, sie ist aber im
Firmennetz eindeutig und immer an den gleichen Rechner gebunden.
Gruss und Danke schon mal,
Karsten
Re: Sessions Namen und IDs
am 06.10.2006 13:24:13 von Jens Riedel
Karsten Busenbender wrote:
> Hallo.
>
> Gibt es einen Zusammenhang zwischen dem Namen einer Session und deren ID?
Falls das so ist, machst du entweder etwas falsch oder an deinem System
ist irgendwas kaputt.
Ansonsten könnte man ja jedwede SessionID auf Systemen erraten, die den
Standardnamen für die Session verwenden (und das dürften die meisten sein).
Jens
--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach
Re: Sessions Namen und IDs
am 06.10.2006 20:40:49 von Frank Schenk
Karsten Busenbender schrieb:
> Hallo.
>
> Gibt es einen Zusammenhang zwischen dem Namen einer Session und deren ID?
Nö
> Nachdem ich mich in das Thema Sessions eingelesen und viel ausprobiert
> habe, bis ich Variablen uebergeben konnte, habe ich jetzt festgestellt,
> dass ich trotz Loeschen einer Session bei gleicher Namensgebung immer
> die gleiche ID bekomme.
Schalt mal Cookies aus :)
Vermutlich ist bei dir session_use_cookies an und du hast Cookies nicht
auf "Fragen" gestellt.
> Nun habe ich einen Namen gewaehlt, der beispielsweise test192168000001
> heisst, und damit die IP-Adresse des Benutzers angibt. Wenn ich aus
> test192... testi192... mache, bekomme ich eine neue SessID.
Klar, anderer Keks ;)
gruß, Frank
Re: Sessions Namen und IDs
am 06.10.2006 22:26:58 von daniel.gorski
[Karsten Busenbender in de.comp.lang.php.misc]
> Gibt es einen Zusammenhang zwischen dem Namen einer Session und deren ID?
29.10. Was geschieht im Filesystem des Servers, wenn ich Sessions benutze?
http://www.php-faq.de/q/q-sessions-dateisystem.html
Speziell letzter Absatz.
mfg dtg
Re: Sessions Namen und IDs
am 23.10.2006 11:41:39 von Karsten Busenbender
>>Gibt es einen Zusammenhang zwischen dem Namen einer Session und deren ID?
> 29.10. Was geschieht im Filesystem des Servers, wenn ich Sessions benutze?
> http://www.php-faq.de/q/q-sessions-dateisystem.html
Ja, danke fuer den Hinweis. Ich habe im Internet einen Codeschnipsel
gefunden, der dabei helfen soll, durch Sessions erzeugte Cookies zu
loeschen. Ob der Schnipsel einwandfrei funktioniert, kann ich nicht
sagen, jedenfalls bekomme ich weiterhin die gleiche Session-ID. Den
Einsatz von Cookies habe ich in der php.ini gesperrt und dennoch
funktioniert das nicht.
Was muss ich tun, damit ich nach dem Loeschen einer Session eine neue
SID bekomme? Wenn es moeglich ist, wuerde ich dafuer gerne den Safe-Mode
auf on lassen. Kann mir vielleicht jemand ein Beispiel zeigen, wo das
funktioniert?
Gruss,
Karsten
Re: Sessions Namen und IDs
am 23.10.2006 12:09:06 von Claus Reibenstein
Karsten Busenbender schrieb:
>>> Gibt es einen Zusammenhang zwischen dem Namen einer Session und deren ID?
Wer hat das geschrieben? Bitte die Namen der Zitierten stehen lassen.
>> 29.10. Was geschieht im Filesystem des Servers, wenn ich Sessions benutze?
>> http://www.php-faq.de/q/q-sessions-dateisystem.html
Und won wem stammt das?
> Ja, danke fuer den Hinweis. Ich habe im Internet einen Codeschnipsel
> gefunden, der dabei helfen soll, durch Sessions erzeugte Cookies zu
> loeschen. Ob der Schnipsel einwandfrei funktioniert, kann ich nicht
> sagen, jedenfalls bekomme ich weiterhin die gleiche Session-ID.
Was genau stört Dich denn daran? Die ID sagt ja noch nichts über den
Inhalt der Session. Wenn der nicht mehr vorhanden ist, ist doch alles in
Ordnung. Oder nicht? Wie sieht dieses Script denn aus?
Irgendwie verstehe ich Dein Problem nicht.
> Den
> Einsatz von Cookies habe ich in der php.ini gesperrt und dennoch
> funktioniert das nicht.
Funktioniert _was_ nicht?
> Was muss ich tun, damit ich nach dem Loeschen einer Session eine neue
> SID bekomme?
Wozu?
Gruß. Claus
Re: Sessions Namen und IDs
am 23.10.2006 13:09:08 von Karsten Busenbender
Claus Reibenstein schrieb:
> Wer hat das geschrieben? Bitte die Namen der Zitierten stehen lassen.
Ok, werde ich drauf achten.
>>>29.10. Was geschieht im Filesystem des Servers, wenn ich Sessions benu=
tze?
>>>http://www.php-faq.de/q/q-sessions-dateisystem.html
Bei den drei Postings ... na gut ...
> Und won wem stammt das?
Ok, ich hab's verstanden ...
> Was genau stört Dich denn daran? Die ID sagt ja noch nichts über de=
n
> Inhalt der Session. Wenn der nicht mehr vorhanden ist, ist doch alles i=
n
> Ordnung. Oder nicht? Wie sieht dieses Script denn aus?
Das Skript von Seite 1:
session_name("test" . $_ENV["USER"] . implode('', explode('.',=20
$_SERVER["REMOTE_ADDR"])));
@session_start();
$variable1 =3D "Das ist der Inhalt von Variable 1.";
$variable2 =3D "Das ist der Inhalt von Variable 2.";
$variable3 =3D "Das ist der Inhalt von Variable 3.";
$_SESSION["variable1"] =3D $variable1;
$_SESSION["variable2"] =3D $variable2;
$_SESSION["variable3"] =3D $variable3;
echo "\n";
echo "
\n";
echo " \n";
echo " \n";
echo "Variable 1 wurde in die Session aufgenommen. -> $variable1
\=
n";
echo "Variable 2 wurde in die Session aufgenommen. -> $variable2
\=
n";
echo "Variable 3 wurde in die Session aufgenommen. -> $variable3
\=
n";
echo "Session hat den Namen " . session_name() . ".
\n";
echo "
"\">nächste Seite
\n";
echo "Session-ID: " . session_id() . "
\n";
echo " \n";
echo "\n";
?>
Das Skript von Seite 2:
session_name("test" . $_ENV["USER"] . implode('', explode('.',=20
$_SERVER["REMOTE_ADDR"])));
@session_start();
echo "\n";
echo " \n";
echo " \n";
echo " \n";
echo "Variable 1 wurde in die Session aufgenommen. -> " . $variable1 =
"
\n";
echo "Variable 2 wurde in die Session aufgenommen. -> " . $variable2 =
"
\n";
echo "Variable 3 wurde in die Session aufgenommen. -> " . $variable3 =
"
\n";
echo "
\n";
echo "Die Session mit dem Namen " . session_name() . " hat die ID "=20
session_id() . ".
\n";
echo "
\n";
echo ($_GET["SID"] == session_id()) ? "Die Session wird=20
weitergeführt.
\n" : "Eine neue Session wurde gestartet.
\n";
echo "
\n";
echo " \n";
echo " \n";
echo "\n";
$_SESSION =3D array();
if (isset($_COOKIE[session_name()]))
@setcookie(session_name(), '', time()-42000, '/');
session_destroy();
?>
> Irgendwie verstehe ich Dein Problem nicht.
Es muss doch einen Grund haben, warum ich immer die gleiche ID bekomme.=20
Ob das nun wichtig ist, kann ich nicht sagen, mein Gefuehl sagt mir=20
aber, dass irgendwo ein Zusammenhang bestehen muss und das nicht gerade=20
foerderlich fuer Sicherheitsaspekte ist.
>>Den=20
>>Einsatz von Cookies habe ich in der php.ini gesperrt und dennoch=20
>>funktioniert das nicht.
> Funktioniert _was_ nicht?
Ich bekomme immer noch die gleiche ID, wenngleich das Cookie mit dem=20
entsprechenden Sessionnamen geloescht wurde. Klar? session_use_cookies =3D=
off
>>Was muss ich tun, damit ich nach dem Loeschen einer Session eine neue=20
>>SID bekomme?
Weil's Laune macht. SCNR ;-)
Nochmal: Warum bekomme ich immer die gleiche ID? Wo ich doch darauf=20
hoffe, dass jeder User jedes Mal eine andere ID bekommt, damit nicht=20
Daten des einen beim anderen bekannt werden. Wenn aber auf dem gleichen=20
Rechner immer die gleiche SID kommt muss es doch einen Zusammenhang=20
zwischen Rechner und SID geben, oder nicht?
> Gruß. Claus
Gruss,
Karsten
Re: Sessions Namen und IDs
am 23.10.2006 13:56:40 von dev-null-use-reply-adress
Karsten Busenbender schrieb:
> Nochmal: Warum bekomme ich immer die gleiche ID? Wo ich doch darauf
> hoffe, dass jeder User jedes Mal eine andere ID bekommt, damit nicht
> Daten des einen beim anderen bekannt werden. Wenn aber auf dem gleichen
> Rechner immer die gleiche SID kommt muss es doch einen Zusammenhang
> zwischen Rechner und SID geben, oder nicht?
Eigentlich kann das nur passieren, wenn der Client(browser) per
Cookie, Get oder Post erneut die vorherige ID übermittelt. Irgendwo
muß da bei Dir noch der Wurm drin sein.
Aber egal, Du könntest ja auch http://de.php.net/session_regenerate_id
verwenden. Das wäre sicherheitstechnisch eh sinnvoll, zumal Du
ohne Cookies arbeiten möchtest.
Gruß
JPM
Re: Sessions Namen und IDs
am 27.10.2006 18:02:56 von Karsten Busenbender
Hallo NG.
Danke fuer Eure Antworten. Das hat mir viel weiter geholfen.
Zur Loesung meines Problems, falls auch andere damit kaempfen:
php.ini Eintraege
session_use_cookies = Off // Vorgabe: keine Cookies verwenden
session_use_only_cookies = Off
session_enable_transid = Off
session_combat_42 = Off
session_combat_warn = Off
register_globals = Off
Bei register_globals = Off funktioniert session_register() nicht mehr.
Deshalb einfach die Superglobale $_SESSION benutzen. Mit
session_enable_transid = Off verhindere ich, dass ich von der
>>Ausloggen<<-Seite eine ID an eine weitere Seite uebermittelt bekomme.
Die Session beende und loesche ich mit diesem Befehlscocktail:
session_unset();
session_destroy();
$_SESSION = array();
Das scheint zuverlaessig zu funktionieren. Da register_globals = Off,
koennen die Variablen nach dem Start einer Session auch nicht direkt
angesprochen werden. Das Problem habe ich mit diesem Zweizeiler geloest:
foreach ($_SESSION as $key => $value)
$$key = $value;
Falls Interesse besteht, kann ich gerne nochmal das _endgueltige_
Testskript posten, aber eigentlich ist ja alles beschrieben. Ich hoffe,
dem einen oder anderen damit eine Menge Zeit ersparen zu koennen.
Vielleicht hat ja noch der eine oder andere eine Anmerkung dazu,
bestimmt kann man da noch was besser machen. Wuerde mich freuen.
Gruss,
Karsten